package view;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;

import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;

import model.Spieler;
import controller.Logik;
import controller.Spiel;

public class ConfigFrame extends JFrame {
	private ArrayList<SpielerConfigPanel> spieler = new ArrayList<SpielerConfigPanel>();
	private JPanel spielerPanel;

	public ConfigFrame() {
		super("Neues Spiel");

		init();
	}

	public void addSpieler(Spieler spieler) {
		SpielerConfigPanel configPanel = new SpielerConfigPanel(spieler);
		this.spieler.add(configPanel);
		this.spielerPanel.add(configPanel);
		pack();
	}

	public void init() {
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setResizable(false);

		JPanel mainPanel = (JPanel) getContentPane();
		mainPanel.setLayout(new BorderLayout());

		spielerPanel = new JPanel(null);
		spielerPanel
				.setLayout(new BoxLayout(spielerPanel, BoxLayout.PAGE_AXIS));
		mainPanel.add(spielerPanel, BorderLayout.CENTER);
		
		JPanel buttonPanel = new JPanel(new FlowLayout(FlowLayout.LEFT));

		JButton addButton = new JButton("Spieler hinzufügen");
		addButton.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent arg0) {
				addSpieler(new Spieler("Unbenannt", new Color(0, 255, 0), 'a', 's'));
			}
		});
		buttonPanel.add(addButton);
		
		JButton startButton = new JButton("Spiel starten");
		startButton.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent arg0) {
				ConfigFrame.this.startGame();
			}
		});
		buttonPanel.add(startButton);
		
		mainPanel.add(buttonPanel, BorderLayout.PAGE_END);
	}

	public void startGame() {
		MainFrame frame = new MainFrame();
		frame.pack();
		this.setVisible(false);
		frame.setVisible(true);

		// Spiel erzeugen
		Logik logik = new Logik();
		Spieler[] spieler = new Spieler[this.spieler.size()];
		for (int i = 0; i < spieler.length; i++) {
			spieler[i] = this.spieler.get(i).getSpieler();
		}
		Achtung.saveSpieler(spieler);
		new Spiel(spieler, logik, frame);
	}
}
